# encoding=utf-8

from test_tools.script.path_tool import *
from test_tools.view.excel_tools_message_view import ExcelToolsMessageView

JSONPATH = "../client_dev/Assets/AssetBundle/Hope_City/Res/Config"  # 前端工程配置文件目录


def print_path():
    """输出脚本和程序工作目录"""
    log("==========输出脚本和程序工作目录==========")
    current_dir = os.path.dirname(os.path.abspath(__file__))
    working_dir = os.getcwd()
    log(f"当前脚本 {os.path.basename(__file__)} 运行目录： {current_dir}")
    log(f"当前程序工作目录：{working_dir}")
    log("======================================")


def copy_some_files(source: str, target: str, some_files: list) -> tuple:
    log("Copy_file_client-> copy_some_files")
    if not os.path.exists(source):
        os.makedirs(source)
    if not os.path.exists(target):
        os.makedirs(target)
    try:
        # 遍历导表目录，将导出来的json文件复制到工程JSON文件目录中
        for filepath, dirNames, fileNames in os.walk(source):
            if len(fileNames) == 0:
                return False, f"**************** {source} 文件夹中没有任何配置文件 ****************"
            for fileName in fileNames:
                # log(fileName)
                if len(some_files) > 0 and fileName in some_files:
                    _path = str(os.path.join(filepath, fileName))
                    os.chmod(_path, stat.S_IWRITE)  # 赋予用户写权限
                    shutil.copy(_path, target)
                    my_print.print(f"{fileName} 》》》 复制完成")
        return True, f"{source} 复制到 {target} 完成"
    except Exception as e:
        prin_error()
        return False, e


def copy_file(source: str, target: str) -> tuple:
    log("Copy_file_client-> copy_file")
    if not os.path.exists(source):
        os.makedirs(source)
        return False, f"**************** {source} 目录不存在，已新建目录 ****************"
    if not os.path.exists(target):
        os.makedirs(target)
        return False, f"**************** {target} 目录不存在，已新建目录 ****************"
    try:
        # 遍历导表目录，将导出来的json文件复制到工程JSON文件目录中
        for filepath, dirNames, fileNames in os.walk(source):
            if len(fileNames) == 0:
                return False, f"**************** {source} 文件夹中没有任何配置文件 ****************"
            for fileName in fileNames:
                my_print.print(f"{fileName} 》》》 复制完成")
                _path = str(os.path.join(filepath, fileName))
                shutil.copy(_path, target)
        return True, f"{source} 复制到 {target} 完成"
    except Exception as e:
        prin_error()
        return False, e


class Copy_file_client:
    def __init__(self):
        print_path()
        self.__print = my_print.print
        self.__message = ExcelToolsMessageView()  # 信息弹窗控件

    def copyfile(self):
        """
        将导出来的配置文件复制到相应的目录中
        客户端复制到工程中JSON目录中
        """
        log("Copy_file_client-> copyfile")
        isOK, info = copy_file(dirClient, JSONPATH)
        if not isOK:
            self.__print(info, 1)
            self.__message.show_message(
                f"{os.path.basename(__file__)} >>> 将导出来的配置文件复制到客户端目录中 异常：{info}")
        else:
            self.__print(info)
